草庐IT

c++ - std::wstring 长度

全部标签

c# - 通过编写 C dll 来加速 C# 中的数学代码?

我有一个非常大的嵌套for循环,其中对float执行一些乘法和加法。for(inti=0;i这个循环占用了我大部分的处理时间,是一个瓶颈。如果我用C重写这个循环并从C#连接到它,我是否会看到任何速度提升?编辑:我更新了代码以显示s和c是如何生成的。此外,内部循环实际上是从0到i,尽管它可能对问题没有太大影响EDIT2:我在VC++中实现了该算法,并通过dll将其与C#链接,并且在启用所有优化后,速度比C#提高了28%。启用SSE2的论点特别有效。使用MinGW和gcc4.4编译只提供了15%的速度提升。刚刚试用了英特尔编译器,发现这段代码的速度提高了49%。

c# - 创建未定义长度的 C# 对象数组?

我想在C#中创建一个未定义长度的对象数组,然后像这样在循环中填充该数组...string[]splitWords=message.Split(newChar[]{''});Word[]words=newWord[];intwordcount=0;foreach(stringwordinsplitWords){if(word=="")continue;words[wordcount]=newWord(word);wordcount++;}但是,我得到了错误...“数组创建必须有数组大小或数组初始值”为了简洁起见,我在foreach循环中执行了更多逻辑。 最佳答

c# - Release模式下 Console.SetOut 的问题?

我的代码中有一堆Console.WriteLines,我可以在运行时观察它们。我与我也编写的native库进行通信。我想在native库中添加一些printf并观察它们。但是我在运行时看不到它们。我创建了一个复杂的helloworld应用程序来演示我的问题。当应用程序运行时,我可以调试到native库并看到调用了helloworld。但是,输出永远不会出现在文本编写器中。请注意,如果相同的代码作为控制台应用程序运行,则一切正常。C#:[DllImport("native.dll")]staticexternvoidTest();StreamWriterwriter;publicForm

c# - 不用函数直接将字符串限制到一定长度

不是this的副本.我想让一个字符串有一个最大长度。它永远不应该超过这个长度。比方说20个字符的长度。如果提供的字符串大于20,则取前20个字符串并丢弃其余字符串。The该问题的答案显示了如何使用函数来限制字符串,但我想直接在没有函数的情况下进行。我希望每次写入字符串时都进行字符串长度检查。以下是我不想做的事情:stringmyString="mylongstring";myString=capString(myString,20);//我能够用一个属性来完成这个:constintMax_Length=20;privatestring_userName;publicstringuser

c# - 获取视频长度

我找不到一个简单的例子来说明如何以编程方式获取文件的视频长度。许多人说,哦,使用这个库/包装器或其他什么,但没有说如何。我已经下载了ffmpeg,但不知道如何实际使用它,而且似乎没有任何示例说明如何使用它来获取视频时长。我知道如何使用它来转换视频,但我只是想知道视频的持续时间。所有其他信息都无关紧要。有没有什么方法可以简单地做到这一点,无论是在C#、python、java还是其他语言中,它只会返回一个字符串,指示视频文件的长度。请尽可能提供示例。提前致谢!假定标准文件格式,例如wmv、avi、mp4、mpeg。有元数据的东西。 最佳答案

c# - 正则表达式使用 C# 保留未知长度字符串的最后 4 个字符

我需要使用正则表达式来保留字符串的最后4个字符。我不知道字符串的长度,所以我需要从末尾开始倒数。该程序是用c#编写的。下面是两个示例字符串:8400571002945我需要的结果是(最后4个字符):00572945我原来的代码行使用了Regex.Replace,但我找不到可以工作的正则表达式,您可以在下面的评论中看到。replacementVal=Regex.Replace(replacementVal,wildcard.Regex,wildcard.RegexReplaceBy);我将我的代码切换为使用Regex.Match,然后正则表达式(?s)[0-9]{4}$完美运行(见下文)

c# - 在 C 和 C# 中将 int 提升为 unsigned int

看看这段C代码:intmain(){unsignedinty=10;intx=-2;if(x>y)printf("xisgreater");elseprintf("yisgreater");return0;}/*Output:xisgreater.*/我明白为什么输出的x更大,因为当计算机比较两者时,x被提升为无符号整数类型。当x提升为无符号整数时,-2变为65534,这肯定大于10。但为什么在C#中,等效代码会给出相反的结果?publicstaticvoidMain(String[]args){uinty=10;intx=-2;if(x>y){Console.WriteLine("x

c# - 在C#中将字符串写入固定长度的字节数组

不知怎么用谷歌搜索找不到这个,但我觉得它必须很简单......我需要将字符串转换为固定长度的字节数组,例如将“asdf”写入byte[20]数组。数据正在通过网络发送到需要固定长度字段的C++应用程序,如果我使用BinaryWriter并一个一个地写入字符,然后通过写入'填充它,它就可以正常工作\0'适当的次数。有没有更合适的方法来做到这一点? 最佳答案 staticbyte[]StringToByteArray(stringstr,intlength){returnEncoding.ASCII.GetBytes(str.PadRi

c# - 使用 "greater than or equals"或仅使用 "greater than"

我记得从C天起我们就被鼓励使用i>-1代替i>=0因为性能。这是否仍然适用于C#.NET世界?在当今的编译器中使用其中一种对性能有何影响?即编译器是否足够聪明,可以为您优化这些?(顺便说一句,尝试在StackOverflow的问题字段中输入问题“use>=or>”,看看会发生什么。) 最佳答案 不,没有与比较运算符相关的性能问题。无论如何,任何好的编译器都会优化这种微不足道的东西。我不确定您从哪里得到使用“i>-1”而不是“i>=0”的建议。在x86体系结构上,使用哪一种都没有区别:两种情况都恰好需要两条指令......一条用于比较

c# - 由文化敏感的 String.IndexOf 方法匹配的子字符串的长度

我尝试编写一个文化感知字符串替换方法:publicstaticstringReplace(stringtext,stringoldValue,stringnewValue){intindex=text.IndexOf(oldValue,StringComparison.CurrentCulture);returnindex>=0?text.Substring(0,index)+newValue+text.Substring(index+oldValue.Length):text;}但是,它会在Unicode组合字符时阻塞://\u0301isCombiningAcuteAccentCo